home *** CD-ROM | disk | FTP | other *** search
- ----------------------------------------------------------------------------
- TABLE OF CONTENTS FOR CHICAGO SPECIFIC CHANGES
-
- Soft-ICE/W Ver 1.32c
- ----------------------------------------------------------------------------
-
- 1. 32 bit .SYM file support
- 2. 32 bit exports
- 3. THREAD command
- 4. ADDR command
- 5. 32 bit heap support
- 6. Int 41h DOT commands
- 7. VERBOSE keyword
- 8. Listing Dynamic VxDs
- 9. VxD Exports
- 10. 32 bit task names
- 11. WLDR and 32 bit applications
-
-
- 32 bit .SYM file support
- ------------------------
- Support has been added to load 32 bit .SYM files. This feature should
- work for both MAPSYM files and MSYM files.
-
-
- 32 bit exports
- --------------
- Support has been added for 32 bit exported symbols. Use the EXP directive
- in WINICE.DAT to load 32 bit export symbols for any 32 bit DLL. The EXP
- command lists all exported symbols that WINICE knows about. These
- symbols can be used in any WINICE expression and are automatically
- displayed when disassembling code.
-
-
- THREAD command
- --------------
- The THREAD command has been added to display all threads currently
- running. The top line of the display is the current thread. The syntax
- is as follows:
-
- THREAD [task-name | TCB]
-
- If the optional task-name is specified, only threads belonging to the
- task will be displayed. If the TCB is specified only information about
- the one specific thread will be displayed. For each thread the following
- information is dislayed:
-
- RING0TCB - This is the address of the ring 0 thread control block.
- This is the address that is passed to VxDs for thread
- creation and thread termination.
-
- ID - This is the word ID number of the thread.
-
- CONTEXT - This is the context handle for the thread that determines
- what address space is used for the thread.
-
- RING3TCB - This is the address of the ring 3 thread control block.
- This is the one that would be used by applications.
-
- PROCESS - This is the address of the process block that owns the
- thread.
-
- TASKDB - This is the selector of the task database that owns the
- thread.
-
- PDB - This the selector of the program database (protected mode
- PSP).
-
- SZ - This is the size of the thread either 16 or 32 bit.
-
- OWNER - This is the task name of the owner. For 32 bit tasks,
- the module name with the extension stripped off is
- displayed.
-
- An asterisk '*' displayed in front of the owner name indicates that the
- thread is the current thread for the task.
-
-
- ADDR command
- ------------
- The ADDR command has been added to both display and switch to specific
- address contexts. Each 32 bit task is currently given the address space
- from 400000h to 3fffffffh. This is called an address context. The
- syntax of the ADDR command is as follows:
-
- ADDR [context-handle | task-name]
-
- If no parameters are specified information will be displayed for each
- address context. The top line of the display is the current context.
- For each address context, the following information is displayed.
-
- HANDLE - This is the address of the context control block. This
- is the handle that would be passed in VxD calls that
- require a context handle.
-
- PGTPTR - This is the address of an array of page table addresses.
- Each entry in the array represents a 4 meg page table.
- When address contexts are switched this array is copied
- to the appropriate spot in the page directory.
-
- TABLES - This is the number of entries in the PGTPTR array. Not all
- entries contain valid page directory entries. This is
- only the number of entries reserved.
-
- MINADDR - This is the minimum virtual address of the address context.
-
- MAXADDR - This is the maximum virtual address of the address context.
-
- OWNER - This is the task name of the first 32 bit task that uses
- this address context. All the 16 bit tasks share a
- common address context which show up as being owned by
- KERNEL.
-
- If a context-handle or task-name are entered, WINICE will switch to that
- address context. The proper address context will be restored before
- WINICE continues.
-
-
- 32 bit heap support
- -------------------
- Support has been added in the HEAP command for 32 bit heaps. This
- includes both ring3 heaps and ring0 heaps. The syntax for 32 bit heaps
- is as follows:
-
- HEAP 32 [task-name | heap-base]
-
- If no parameters are specified, all 32 bit heaps that can be found will
- be displayed. The following heaps will be displayed:
-
- Each process's system heap. This is the heap created for each process
- by Kernel32 when the process is first created.
-
- Each process's private heap if one exists. This is the heap that
- would be returned in the GetProcessHeap command. Nothing will be
- shown for 16 bit processes since they use KERNEL32's heap.
-
- The two ring 0 heaps created by VMM.
-
- One ring0 heap for every existing virtual machine.
-
-
- For each 32 bit heap the following information will be displayed:
-
- The heap base address.
-
- The maximum size that the heap can grow too.
-
- The current committed memory in the heap.
-
- The owner of the heap.
-
-
- If a task-name is provided, WINICE will display the entire process heap
- for that task. The address context will automatically be changed to the
- correct one. If a 16 bit task name is given, KERNEL32's heap will be
- displayed.
-
- If an actual heap base address is given that entire heap will be
- displayed. If the heap is in private address space, you must make sure
- you are in the right address context for that heap.
-
- When displaying an individual 32 bit heap the following information is
- displayed:
-
- The address of each heap element.
-
- The size in bytes of each element.
-
- The EIP address of the code that allocated the element.
-
- The nearest symbol to the EIP address.
-
- The last two pieces of information are only available in the debug
- versions of CHICAGO. For ring3 heaps this means the SDK debug versions,
- for ring0 heaps this means the DDK debug version of DOS386.
-
-
- INT 41h DOT Commands
- --------------------
- Support has been added for the following int 41h dot commands.
-
- function 70h register 32 bit dot command
- 72h deregister dot command
- 73h printf32
- 75h get registers
- 76h set registers
- 77h get character from command line
- 78h evaluate expression
- 79h verify memory address
- 7ah display registers
- 7bh stack dump
-
-
- VERBOSE keyword
- ---------------
- When the VERBOSE keyword is placed on a line in the WINICE.DAT file
- WINICE will display debugging messages when the following events occur.
-
- 16 bit segment loads and segment frees
- 32 bit segment loads and segment frees
- Module deleted
- DLL starting
- ALL VxD messages
-
-
- Dynamic VxDs
- ------------
- The VXD command now displays a list of dynamically loaded VxDs.
- Everything displayed after the dashed lines is a dynamic VxD.
-
-
- VxD Exports
- -----------
- Changed the VCALL and VXD commands to include VXD services for every
- CHICAGO VxD contained in the DDK include files.
-
-
- 32 bit task names
- -----------------
- In the current release of CHICAGO all 32 bit tasks have the same task
- name which is 'THREAD32'. Rather than display this, WINICE will use
- the name found in the 16 bit module data base for the task. This name
- is the FILE.EXT of the module. WINICE strips off the extension before
- displaying this. On commands that accept a task name, enter only the
- file portion of the name.
-
-
- WLDR and 32 bit applications
- ----------------------------
- Currently WLDR will not load symbols for a 32 bit application. It can be
- used to load them but when it pops up the screen will be filled with
- invalid instructions. This is because the code has not actually been
- loaded. Single stepping once (F8) will force the code to load.
-